package cn.hrms.service.impl;

import cn.dev33.satoken.stp.StpUtil;
import cn.hrms.domain.Evaluation;
import cn.hrms.exception.ServiceException;
import cn.hrms.mapper.EvaluationMapper;
import cn.hrms.service.IEvaluationService;
import cn.hrms.utils.DateUtils;
import cn.hrms.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 评价服务实现类
 *
 * @author xiaokai54
 * @date 2024/12/19
 */
@Service
@RequiredArgsConstructor
public class EvaluationServiceImpl implements IEvaluationService {
	private final EvaluationMapper evaluationMapper;

	/**
	 * 查询评价管理
	 *
	 * @param evaluationId 评价管理主键
	 * @return 评价管理
	 */
	@Override
	public Evaluation selectEvaluationByEvaluationId(Long evaluationId) {
		Evaluation evaluation = evaluationMapper.selectEvaluationByEvaluationId(evaluationId);
		if (evaluation == null){
			throw new ServiceException("评价不存在");
		}
		return evaluation;
	}

	/**
	 * 查询评价管理列表
	 *
	 * @param evaluation 评价管理
	 * @return 评价管理
	 */
	@Override
	public List<Evaluation> selectEvaluationList(Evaluation evaluation) {
		evaluation.setEmpNo(Long.valueOf(StpUtil.getSession().get("userEmpNo").toString()));
		return evaluationMapper.selectEvaluationList(evaluation);
	}

	/**
	 * 新增评价管理
	 *
	 * @param evaluation 评价管理
	 * @return 结果
	 */
	@Override
	public int insertEvaluation(Evaluation evaluation) {
		if (evaluation == null) {
			throw new ServiceException("评价不能为空");
		}
		if (StringUtils.isBlank(evaluation.getContent())){
			throw new ServiceException("评价内容不能为空");
		}
		evaluation.setEmpNo(Long.valueOf(StpUtil.getSession().get("userEmpNo").toString()));
		evaluation.setEvaluationTime(DateUtils.getNowDate());
		evaluation.setCreateUser(StpUtil.getSession().get("username").toString());
		evaluation.setModifyUser(StpUtil.getSession().get("username").toString());
		evaluation.setCreateTime(DateUtils.getNowDate());
		evaluation.setModifyTime(DateUtils.getNowDate());
		return evaluationMapper.insertEvaluation(evaluation);
	}

	/**
	 * 修改评价管理
	 *
	 * @param evaluation 评价管理
	 * @return 结果
	 */
	@Override
	public int updateEvaluation(Evaluation evaluation) {
		return evaluationMapper.updateEvaluation(evaluation);
	}

	/**
	 * 批量删除评价管理
	 *
	 * @param evaluationIds 需要删除的评价管理主键
	 * @return 结果
	 */
	@Override
	public int deleteEvaluationByEvaluationIds(Long[] evaluationIds) {
		return evaluationMapper.deleteEvaluationByEvaluationIds(evaluationIds);
	}

	/**
	 * 删除评价管理信息
	 *
	 * @param evaluationId 评价管理主键
	 * @return 结果
	 */
	@Override
	public int deleteEvaluationByEvaluationId(Long evaluationId) {
		return evaluationMapper.deleteEvaluationByEvaluationId(evaluationId);
	}
}
